Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • View renderedDownload


README.md 9d2a19a7bd155b6acb2d4892e8beac182137ee4e (9d2a19a7) Text, 6.75 KB

Tc9d1d9# Reticulum MeshChatX

A heavily customized and updated fork of [Tff7b72Reticulum MeshChat](Te6edf3https://github.com/liamcottle/reticulum-meshchat).

This project is seperate from the original Reticulum MeshChat project, and is not affiliated with the original project. It has been completely reworked, but I try to maintain a migrator to auto-migrate from old database to new one.

Tc9d1d9## Major Features

Tff7b72- Full LXST support w/ custom voicemail support (espeak-ng and ffmpeg required).
Tff7b72- Map (w/ MBTiles support for offline)
Tff7b72- Security improvements
Tff7b72- Custom UI/UX
Tff7b72- More Tools
Tff7b72- Built-in page archiving and automatic crawler (no multi-page support yet).
Tff7b72- Block LXMF users and NomadNet Nodes
Tff7b72- Toast system for notifications
Tff7b72- i18n support (En, De, Ru)
Tff7b72- Raw SQLite database backend (replaced Peewee ORM)

Tc9d1d9## TODO

Tff7b72- Tff7b72[ ] Tests and proper CI/CD pipeline.
Tff7b72- Tff7b72[ ] RNS hot reload fix
Tff7b72- Tff7b72[ ] Backup/Import identities, messages and interfaces.
Tff7b72- Tff7b72[ ] Offline Reticulum documentation tool
Tff7b72- Tff7b72[ ] LXMF Telemtry for map
Tff7b72- Tff7b72[ ] Spam filter (based on keywords)
Tff7b72- Tff7b72[ ] Multi-identity support.
Tff7b72- Tff7b72[ ] TAK tool/integration
Tff7b72- Tff7b72[ ] RNS Tunnel - tunnel your regular services over RNS to another MeshchatX user.
Tff7b72- Tff7b72[ ] RNS Filesync - P2P file sync

Tc9d1d9## Usage

Check [Tff7b72releases](Te6edf3https://git.quad4.io/Ivan/MeshChatX/releases) for pre-built binaries or appimages.

Tc9d1d9## Building

This project uses [Tff7b72Task](Te6edf3https://taskfile.dev/) for build automation. Install Task first, then:

Ta5d6ff```Ta5d6ffbash
task install T8b949e# installs Python deps via Poetry and Node deps via pnpm
task build
Ta5d6ff```

You can run Ta5d6ff`task run` or Ta5d6ff`task develop` (a thin alias) to start the backend + frontend loop locally through Ta5d6ff`poetry run meshchat`.

Tc9d1d9### Available Tasks

| Task | Description |
| ---------------------------- | ------------------------------------------------------------------------------- |
| Ta5d6ff`task install` | Install all dependencies (syncs version, installs node modules and python deps) |
| Ta5d6ff`task node_modules` | Install Node.js dependencies only |
| Ta5d6ff`task python` | Install Python dependencies using Poetry only |
| Ta5d6ff`task sync-version` | Sync version numbers across project files |
| Ta5d6ff`task run` | Run the application |
| Ta5d6ff`task develop` | Run the application in development mode (alias for Ta5d6ff`run`) |
| Ta5d6ff`task build` | Build the application (frontend and backend) |
| Ta5d6ff`task build-frontend` | Build only the frontend |
| Ta5d6ff`task clean` | Clean build artifacts and dependencies |
| Ta5d6ff`task wheel` | Build Python wheel package (outputs to Ta5d6ff`python-dist/`) |
| Ta5d6ff`task build-appimage` | Build Linux AppImage |
| Ta5d6ff`task build-exe` | Build Windows portable executable |
| Ta5d6ff`task dist` | Build distribution (defaults to AppImage) |
| Ta5d6ff`task electron-legacy` | Install legacy Electron version |
| Ta5d6ff`task build-appimage-legacy` | Build Linux AppImage with legacy Electron version |
| Ta5d6ff`task build-exe-legacy` | Build Windows portable executable with legacy Electron version |
| Ta5d6ff`task build-docker` | Build Docker image using buildx |
| Ta5d6ff`task run-docker` | Run Docker container using docker-compose |

All tasks support environment variable overrides. For example:

Tff7b72- Ta5d6ff`PYTHON=python3.12 task install`
Tff7b72- Ta5d6ff`DOCKER_PLATFORMS=linux/amd64,linux/arm64 task build-docker`

Tc9d1d9### Python Packaging

The backend uses Poetry with Ta5d6ff`pyproject.toml` for dependency management and packaging. Before building, run Ta5d6ff`python3 scripts/sync_version.py` (or Ta5d6ff`task sync-version`) to ensure the generated Ta5d6ff`src/version.py` reflects the version from Ta5d6ff`package.json` that the Electron artifacts use. This keeps the CLI release metadata, wheel packages, and other bundles aligned.

Tc9d1d9#### Build Artifact Locations

Both Ta5d6ff`poetry build` and Ta5d6ff`python -m build` generate wheels inside the default Ta5d6ff`dist/` directory. The Ta5d6ff`task wheel` shortcut wraps Ta5d6ff`poetry build -f wheel` and then runs Ta5d6ff`python scripts/move_wheels.py` to relocate the generated Ta5d6ff`.whl` files into Ta5d6ff`python-dist/` (the layout expected by Ta5d6ff`scripts/test_wheel.sh` and the release automation). Use Ta5d6ff`task wheel` if you need the artifacts in Ta5d6ff`python-dist/`; Ta5d6ff`poetry build` or Ta5d6ff`python -m build` alone will leave them in Ta5d6ff`dist/`.

Tc9d1d9#### Building with Poetry

Ta5d6ff```Ta5d6ffbash
T8b949e# Install dependencies
poetry install

T8b949e# Build the package (wheels land in dist/)
poetry build

T8b949e# Install locally for testing (consumes dist/)
pip install dist/*.whl
Ta5d6ff```

Tc9d1d9#### Building with pip (alternative)

If you prefer pip, you can build/install directly:

Ta5d6ff```Ta5d6ffbash
T8b949e# Build the wheel
pip install build
python -m build

T8b949e# Install locally
pip install .
Ta5d6ff```

Tc9d1d9### Building in Docker

Ta5d6ff```Ta5d6ffbash
task build-docker
Ta5d6ff```

Ta5d6ff`build-docker` creates Ta5d6ff`reticulum-meshchatx:local` (or Ta5d6ff`$DOCKER_IMAGE` if you override it) via Ta5d6ff`docker buildx`. Set Ta5d6ff`DOCKER_PLATFORMS` to Ta5d6ff`linux/amd64,linux/arm64` when you need multi-arch images, and adjust Ta5d6ff`DOCKER_BUILD_FLAGS`/Ta5d6ff`DOCKER_BUILD_ARGS` to control Ta5d6ff`--load`/Ta5d6ff`--push`.

Tc9d1d9### Running with Docker Compose

Ta5d6ff```Ta5d6ffbash
task run-docker
Ta5d6ff```

Ta5d6ff`run-docker` feeds the locally-built image into Ta5d6ff`docker compose -f docker-compose.yml up --remove-orphans --pull never reticulum-meshchatx`. The compose file uses the Ta5d6ff`MESHCHAT_IMAGE` env var so you can override the target image without editing the YAML (the default still points at Ta5d6ff`ghcr.io/sudo-ivan/reticulum-meshchatx:latest`). Use Ta5d6ff`docker compose down` or Ta5d6ff`Ctrl+C` to stop the container.

The Electron build artifacts will still live under Ta5d6ff`dist/` for releases.

Tc9d1d9### Standalone Executables (cx_Freeze)

The Ta5d6ff`cx_setup.py` script uses cx_Freeze for creating standalone executables (AppImage for Linux, NSIS for Windows). This is separate from the Poetry/pip packaging workflow.

Tc9d1d9## Internationalization (i18n)

Multi-language support is in progress. We use Ta5d6ff`vue-i18n` for the frontend.

Translation files are located in Ta5d6ff`meshchatx/src/frontend/locales/`.

Currently supported languages:

Tff7b72- English (Primary)
Tff7b72- Russian
Tff7b72- German


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────